<?php
/**
 * User: ppjun378
 * Data: 2010/01/28
 * Time: 18:00
 */

namespace App\Service;

use App\Model\InterviewScores;

class InterviewScoresService
{

    /**
     * 获取详情
     * @param int $id
     * @return mixed
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function getDetail($request)
    {
        $resume_id = $request->input('resume_id', '');
        $fields = [
            'resume_id', // 简历表编号
            'grooming', // 仪容仪表
            'ability_to_respond_and_express', // 反应及表达能力
            'relevant_working_experience', // 相关工作经验
            'degree_of_confidence', // 自信程度
            'professional_knowledge', // 对专业知识的掌握程度
            'degree_of_reaction', // 所具经验与本公司业务的反应程度
            'general_knowledge_of_the_company', // 对本公司一般情况下的了解程度
            'stability', // 稳定性
            'cooperative', // 合作性
            'willingness_to_work', // 前来公司工作的意愿
            'overall_rating', // 总评
            'opinion_of_personnel_department', //用人单位意见
        ];

        $login_type_id = $request->input('login_type_id', '');
        $new_fields = array();
        if ($login_type_id >= 2) {
            $new_fields = [
                'grades', // 档级1:1档(默认)2:2档3:3档4:其他
                'rank', //职级
                'salary_range', //薪资幅度
                'opinions_of_the_employing_department', //用人部门意见
                'special_salary', //特殊薪资
            ];

        }

        if ($login_type_id >= 3) {
            array_push($new_fields, 'opinions_of_the_manager'); //经理意见
        }
        $fields = array_merge($fields, $new_fields);

        $data = InterviewScores::select($fields)
            ->where('resume_id', $resume_id)
            ->first();

        $data = empty($data) ? array() : $data->toArray();

        $list['code'] = 0;
        $list['msg'] = '查询成功';
        $list['data'] = $data;

        return $list;

    }

    /**
     * 添加/更新
     * @param $request
     * @return mixed
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function store($request)
    {
        $data = $request->all();
        $resume_id = $request->input('resume_id', '');
        $map = [];
        $fields = [
            'resume_id', // 简历表编号
            'grooming', // 仪容仪表
            'ability_to_respond_and_express', // 反应及表达能力
            'relevant_working_experience', // 相关工作经验
            'degree_of_confidence', // 自信程度
            'professional_knowledge', // 对专业知识的掌握程度
            'degree_of_reaction', // 所具经验与本公司业务的反应程度
            'general_knowledge_of_the_company', // 对本公司一般情况下的了解程度
            'stability', // 稳定性
            'cooperative', // 合作性
            'willingness_to_work', // 前来公司工作的意愿
            'overall_rating', // 总评
            'opinion_of_personnel_department', //用人单位意见
        ];

        $login_type_id = $request->input('login_type_id', '');
        $new_fields = array();
        if ($login_type_id >= 2) {
            $new_fields = [
                'grades', // 档级1:1档(默认)2:2档3:3档4:其他
                'rank', //职级
                'salary_range', //薪资幅度
                'opinions_of_the_employing_department', //用人部门意见
                'special_salary', //特殊薪资
            ];

        }

        if ($login_type_id >= 3) {
            array_push($new_fields, 'opinions_of_the_manager'); //经理意见
        }
        $fields = array_merge($fields, $new_fields);

        foreach ($data as $k => $v) {
            if ($v === null) {$v = 0;}
            if (in_array($k, $fields) && !empty($v)) {
                $map[$k] = $v;
            }
        }

        $data_exist = InterviewScores::where('resume_id', $resume_id)->first();
        if ($resume_id && $data_exist) {
            // 更新信息
            $result = InterviewScores::where('resume_id', $resume_id)->update($map);
            ResumesService::save($request);
        } else {
            // 添加信息
            $result = InterviewScores::create($map);
            $id = $result->id;
            return $id;
        }
        return $result;

    }

    /**
     * 删除
     * @param $request
     * @return bool\Intervention
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function destory($request)
    {
        $id = $request->input('id', '');
        $res = Resumes::destory($id);
        if ($res > 0) {
            return $res;
        } else {
            return false;
        }
    }

    /**
     * 恢复删除
     * @param $int $id
     * @return mixed
     * @author ppjun378 <ppjun378@foxmail.com>
     */
    public static function restore($request)
    {
        $id = $request->input('id', '');
        $res = Resumes::where('id', $id)->restore();
        return $res;
    }

}
